package com.algo.moduleTwo;

import java.util.HashMap;
import java.util.Map;
import java.util.Set;

/**
 * @author zhangjiangnan8
 */
public class FindShortestSubArray {
    public int findShortestSubArray(int[] nums) {

        Map<Integer, int[]> map = new HashMap<>(500);
        for (int i = 0; i < nums.length; i++) {

            // val存放数组 分别是出现次数、起始位置、终止位置
            if(map.containsKey(nums[i])){

                map.get(nums[i])[0]++;
                map.get(nums[i])[2] = i;

            }else {
                map.put(nums[i], new int[]{1,i,i});
            }

        }
        int max = 0;
        int minLen = 0;
        for(Map.Entry<Integer, int[]> entry : map.entrySet()){
            int[] arr = entry.getValue();
            if(max < arr[0]){
                max = arr[0];
                minLen = arr[2] -arr[1] + 1;
            }
            // 如果最大
            else if(max == arr[0]) {
                // 再次判断 minlen 是不是最小
                if(minLen > arr[2] -arr[1] + 1){
                    minLen = arr[2] -arr[1] + 1;
                }
            }
        }

        return  minLen;
    }
}
